package pl;

import java.util.ArrayList;

public class listaModulos {
    ArrayList<nodoModulo> modulos;

    public listaModulos(){
        modulos = new ArrayList<nodoModulo>();
    }

    public listaModulos(ArrayList<nodoModulo> modulos){
        this.modulos = modulos;
    }

    public void mete(int nivel, String nomModulo, String cabecera) {
        modulos.add(new nodoModulo(nivel,nomModulo,cabecera));
    }

    public boolean estableceCampos(String nomModulo, String nuevaCadena, Integer nivel, listaVariables vars, listaModulos mods, ArrayList<asignacion> asignaciones, Boolean usado) {
        boolean esta = false;
        if (nomModulo != null) {
            for (int i = 0; i < modulos.size() && !esta; i++) {
                if (nomModulo.equals(modulos.get(i).obtenNomModulo())) {
                    esta = true;
                    if(nuevaCadena!=null) {
                        modulos.get(i).estableceNomModulo(nuevaCadena);
                    }
                    if (nivel != null) {
                        modulos.get(i).estableceNivel(nivel);
                    }
                    if (usado != null) {
                        modulos.get(i).estableceUtilizado(usado);
                    }
                    if(vars!=null){
                        modulos.get(i).variables = vars;
                    }
                    if(mods!= null) {
                        modulos.get(i).modulos = mods;
                    }
                    if(asignaciones!=null) {
                        modulos.get(i).asignaciones = asignaciones;
                    }
                }
            }
        }
        return(esta);
    }


    public boolean estableceCadena(String vieja, String nueva){
        return(estableceCampos(vieja,nueva,null,null,null,null,null));
    }

    public boolean estableceNivel(String cadena, int nivel) {
        return(estableceCampos(cadena,null,nivel,null,null,null,null));
    }

    public boolean estableceUso(String cadena, boolean uso){
        return(estableceCampos(cadena,null,null,null,null,null,uso));
    }

    public boolean usa(String nomModulo){
        return(estableceCampos(nomModulo,null,null,null,null,null,true));
    }

    public boolean desusa(String cadena){
        return(estableceCampos(cadena,null,null,null,null,null,false));
    }

    public boolean esUsado(String cadena){
        boolean esta = false;
        boolean utilizado= false;

        if (cadena != null) {
            for (int i = 0; i < modulos.size() && !esta; i++) {
                if (cadena.equals(modulos.get(i).obtenNomModulo())) {
                   utilizado= true;
                }
            }
        }
        return (utilizado);
    }

    @Override
    public String toString(){
        String retorno="";

            for (int i = 0; i < modulos.size(); i++) {
               retorno+= modulos.get(i).toString();
            }

        return (retorno);
    }
}


